package de.androidbuch.amando.services;

import android.os.Handler;
import de.androidbuch.amando.kontakt.GeoPosition;

/**
 * Interface für die öffentlichen Methoden des
 * GeoPositionsService. Der Zugriff auf die Methoden wird
 * über einen Binder realisiert, der Teil der
 * Service-Implementierung ist.
 * 
 * @author Arno Becker, 2010 visionera gmbh
 */
public interface INetzwerkService {

  /** 
   * Sende die eigene aktuelle Position an den Server. 
   * 
   * @param position Aktuelle eigene Position.
   */
  void sendeEigenePosition(GeoPosition position);

  /**
   * Lauscht, ob sich der Besitzer von 'mobilNummer' bewegt.
   * Falls ja, wird dem @see{karteAnzeigenCallbackHandler}
   * eine Message mit der neuen Position des Clients
   * übegeben.
   * 
   * @param senderMobilNummer
   *          Mobilnummer des Senders der SMS
   * @param clientMobilNummer
   *          Mobilnummer dieses Geräts (Client)
   * @return true, wenn die Verbindung mit dem Server
   *         klappt. Sonst false
   */
  boolean empfangeFreundPosition(
      String senderMobilNummer,
      String clientMobilNummer);

  /**
   * Übergibt dem Service einen Callback-Handler, um die
   * aktualisierte Position der Clients zu melden. Der
   * Handler wird in der Activity @see{KarteAnzeigen}
   * definiert und dem NetzwerkSerice übergeben. Er dient
   * dem Aktualisieren der Positionen der Clients (dem
   * Sender der SMS).
   * 
   * @param callback
   *          ein Handler-Objekt zur Aktualisierung der
   *          Oberfläche.
   */
  void setAnzeigeCallbackHandler(Handler callback);

  /**
   * Entfernt den CallbackHandler, der mit dem 
   * NetzwerkService übergeben wurde. Die Methode wird in
   * Activity KarteAnzeigen.java gebraucht, wenn die 
   * Activity nicht mehr sichtbar ist.
   * 
   * @see{setAnzeigeCallbackHandler}
   * @see{KarteAnzeigen} 
   */
  void entferneAnzeigeCallbackHandler();
}
